DefConst('kLoginFunc, func(options)
		begin
			[
				func()
				begin
					:ShowStatusText(true, nil, kIdentificationString);
					:ShowStatusTitle(nil, nil, nil);
					return 'ok;
				end,
				{
					toolSymbol: '|Try|,
					instruction: {
							toolSymbol: 'WaitForString,
							string: "ogin",
							timeout: 15000,
						},
					warning: [
							{
								toolSymbol: 'SendString,
								string: "" & unicodeCR,
							},
							{
								toolSymbol: 'WaitForString,
								string: "ogin",
								timeout: 15000,
							},
						],
				},
				{
					toolSymbol: 'SendString,
					string: options.login & unicodeCR,
				},
				{
					toolSymbol: 'WaitForString,
					string: "assword",
					timeout: 15000,
				},
				{
					toolSymbol: 'SendString,
					isSecret: true,
					string: options.password & unicodeCR,
				},
				{
					toolSymbol: 'WaitForString,
					string: "$",
					timeout: 15000,
				},
				func()
				begin
					:ShowStatusText(true, nil, kIdentifiedString);
					:ShowStatusTitle(nil, nil, nil);
					return 'ok;
				end,
			];
		end);

DefConst('kLogoutFunc, func()
		begin
			[
				func()
				begin
					:ShowStatusText(true, nil, kLeavingServerString);
					:ShowStatusTitle(nil, nil, nil);
					return 'ok;
				end,
				{
					toolSymbol: 'SendString,
					string: "exit" & unicodeCR,
				},
			];
		end);

DefConst('kSendCommandAndWaitForEchoFunc, func(command)
		begin
			[
				{
					toolSymbol: 'SendString,
					string: command & unicodeCR,
				},
				{
					toolSymbol: 'WaitForString,
					string: command & unicodeCR & unicodeLF,
					timeout: 15000,
				},
			];
		end);

DefConst('kSendReturnFunc, func()
		begin
			{
				toolSymbol: 'SendString,
				string: "" & unicodeCR,
			};
		end);

DefConst('kWaitForPromptFunc, func()
		begin
			{
				toolSymbol: 'WaitForString,
				string: "$",
				timeout: 15000,
			};
		end);
